#include "ml_key.h"


uint8_t key1_flag;
static uint8_t key1_status = 1;
static uint8_t key1_last_status = 1;
uint8_t key2_flag;
static uint8_t key2_status = 1;
static uint8_t key2_last_status = 1;
uint8_t key3_flag;
static uint8_t key3_status = 1;
static uint8_t key3_last_status = 1;
uint8_t key4_flag;
static uint8_t key4_status = 1;
static uint8_t key4_last_status = 1;

// 2025
uint8_t Key_Num = 0;

/*************************************************************************
 *  函数名称：void  Key_init (void)
 *  功能说明：按键初始化
 *  参数说明：无
 *  函数返回：无
 *  修改时间：2024年8月22日
 *  备    注：
 *************************************************************************/
void Key_init(void) {
  gpio_init(GPIOA, DL_GPIO_PIN_9, PA9, IN_UP); // KEY1
  gpio_init(GPIOA, DL_GPIO_PIN_8, PA8, IN_UP); // KEY2
  gpio_init(GPIOB, DL_GPIO_PIN_3, PB3, IN_UP); // KEY3
  gpio_init(GPIOB, DL_GPIO_PIN_2, PB2, IN_UP); // KEY4
}
/*************************************************************************
 *  函数名称：void  Key_Scan (void)
 *  功能说明：按键扫描函数
 *  参数说明：无
 *  函数返回：无
 *  修改时间：2024年8月22日
 *  备    注：
 *************************************************************************/
void Key_Scan(void) {

  /*按键1*/
  key1_last_status = key1_status;
  key1_status = KEY1;
  if (key1_status && !key1_last_status)
    key1_flag = 1;

  /*按键2*/
  key2_last_status = key2_status;
  key2_status = KEY2;
  if (key2_status && !key2_last_status)
    key2_flag = 1;

  /*按键3*/
  key3_last_status = key3_status;
  key3_status = KEY3;
  if (key3_status && !key3_last_status)
    key3_flag = 1;

  /*按键4*/
  key4_last_status = key4_status;
  key4_status = KEY4;
  if (key4_status && !key4_last_status)
    key4_flag = 1;
}

// 2025 ti
uint8_t Key_GetNum(void) {
  uint8_t key_num = 0;
  if (key1_flag) {
    key_num = 1;
    key1_flag = 0;
  }
  if (key2_flag) {
    key_num = 2;
    key2_flag = 0;
  }
  if (key3_flag) {
    key_num = 3;
    key3_flag = 0;
  }
  if (key4_flag) {
    key_num = 4;
    key4_flag = 0;
  }
  return key_num;
}